NixのBinary Cache
hashが同じであれば全く同じbuild生成物ができあがる
そこで、hashをkeyに、build生成物をvalueにして他者とbuild生成物の共有ができる
既に誰かが同じ内容のものをbuild済みで、それをどこかにcacheしておく
次にそれを使う人は自分でbuildするのではなく、そのcacheを使用すれば良い
buildにかかる時間を無視できる
buildに失敗することもない
めちゃくちゃ小さいproductならばbuildも一瞬で済むのでわざわざ共有する必要もないが、gccとかGHCのような大きめのproductをlocalで毎度buildするのは大変mrsekut.icon
このpurely functionalならではの特性を活かしてBinary Cacheを共有する方法がある
Usecases
個人で作ったBinary Cacheを複数マシン間で共有する
他人が作ったBinary Cacheを利用する
例えばOSSで、大きいBuild結果になるものを保存しておけば、そこにContributeしたい人は、それを取ってくれば良い
例えばHaskellの(ちょい昔の)IDE Engineを入れる時にCachixを利用するなど ref 業務でプロダクトをBuildするときなど
deployの度に全部をBuildする必要がなくなるので、deployにかかる時間を短くできる
全く同じ内容と、同じ依存関係のものを、
マシンAでbuildした時に生成されるhashと、
マシンBでbuildした時に生成されるhash
って全く同じものになる?
nixpkgsのversionなども含めて、全てが同じだった時
参考
fibの結果をcacheしよう、という記事